package Metier.Utils;

import java.sql.Timestamp;
import java.util.Date;

public class DateUtils {

    private DateUtils() {}

    /** Créé une chaine de caractère au format [jours:heures:]minutes:secondes à partir d'un nombre de secondes
     * @param seconds Temps en secondes
     * @return Temps sous le forme [jours:heures:]minutes:secondes ex: 08:32
     */
    public static String secondsToMinuteAndSeconds(long seconds) {
        long d = seconds / 86400;
        long h = (seconds / 3600) % 24;
        long m = (seconds / 60) % 60;
        long s = seconds % 60;
        String days = d > 0 ? String.valueOf(d) + ":" : "";
        String hours;
        if (h > 0) {
            hours = h < 10 ? "0" + h + ":" : String.valueOf(h) + ":";
        } else {
            hours = "";
        }
        String minutes = m < 10 ? "0" + m : String.valueOf(m);
        String secondes = s < 10 ? "0" + s : String.valueOf(s);
        return days + hours + minutes + ":" + secondes;
    }

    /** Renvoie le nombre de secondes restantes en fonction de la date de départ et d'une durée.
     * @param date Timestamp de début
     * @param duree Durée du timer en secondes
     * @return Le nombres de secondes restantes
     */
    public static long secondsLeft(Timestamp date, long duree) {
        Date d = new Date();
        Timestamp now = new Timestamp(d.getTime());
        return (duree * 1000 - (now.getTime() - date.getTime())) / 1000;
    }

    public static long secondsLeft(Timestamp date) {
        Date d = new Date();
        Timestamp now = new Timestamp(d.getTime());
        return (date.getTime() - now.getTime()) / 1000;
    }
}
